home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / share / initramfs-tools / scripts / local-premount / resume < prev   
Encoding:
Text File  |  2009-04-02  |  2.3 KB  |  119 lines

  1. #!/bin/sh
  2.  
  3. PREREQ=""
  4.  
  5. prereqs()
  6. {
  7.     echo "$PREREQ"
  8. }
  9.  
  10. case $1 in
  11. # get pre-requisites
  12. prereqs)
  13.     prereqs
  14.     exit 0
  15.     ;;
  16. esac
  17.  
  18. if [ -z "${resume}" ]; then
  19.     exit 0
  20. fi
  21.  
  22. case $resume in
  23. LABEL=*)
  24.     resume="${resume#LABEL=}"
  25.  
  26.     # support any / in LABEL= path (escape to \x2f)
  27.     case "${resume}" in
  28.     *[/]*)
  29.         if [ -x "$(command -v sed)" ]; then
  30.             resume="$(echo ${resume} | sed 's,/,\\x2f,g')"
  31.         else
  32.             if [ "${resume}" != "${resume#/}" ]; then
  33.                 resume="\x2f${resume#/}"
  34.             fi
  35.             if [ "${resume}" != "${resume%/}" ]; then
  36.                 resume="${resume%/}\x2f"
  37.             fi
  38.             IFS='/'
  39.             newresume=
  40.             for s in $resume; do
  41.                 if [ -z "${newresume}" ]; then
  42.                     newresume="${s}"
  43.                 else
  44.                     newresume="${newresume}\\x2f${s}"
  45.                 fi
  46.             done
  47.             unset IFS
  48.             resume="${newresume}"
  49.         fi
  50.     esac
  51.     resume="/dev/disk/by-label/${resume}"
  52.     ;;
  53. UUID=*)
  54.     resume="/dev/disk/by-uuid/${resume#UUID=}"
  55.     ;;
  56. esac
  57.  
  58. . ./scripts/functions
  59.  
  60. if [ ! -e "${resume}" ] || ! /lib/udev/vol_id "${resume}" >/dev/null 2>&1; then
  61.     log_begin_msg "Waiting for resume device..."
  62.  
  63.     # Default delay is 5s
  64.     if [ -z "${RESUMEDELAY}" ]; then
  65.         slumber=5
  66.     else
  67.         slumber=${RESUMEDELAY}
  68.     fi
  69.     if [ -x /sbin/usplash_write ]; then
  70.         /sbin/usplash_write "TIMEOUT ${slumber}" || true
  71.     fi
  72.  
  73.     slumber=$(( ${slumber} * 10 ))
  74.     while [ ! -e "${resume}" ] || ! /lib/udev/vol_id "${resume}" >/dev/null 2>&1; do
  75.         /bin/sleep 0.1
  76.         slumber=$(( ${slumber} - 1 ))
  77.         [ ${slumber} -gt 0 ] || break
  78.     done
  79.  
  80.     if [ ${slumber} -gt 0 ]; then
  81.         log_end_msg 0
  82.     else
  83.         log_end_msg 1 || true
  84.         exit
  85.     fi
  86. fi
  87.  
  88. magic=SWAPSPACE2S1SUSPEND
  89. str=$(dd if=$resume bs=1 skip=4076 count=19)
  90. magic_found=
  91.  
  92. if [ "$str" = "$magic" ]; then
  93.     magic_found=yes
  94. fi
  95.  
  96. if [ -n "$magic_found" -a -x /sbin/usplash_write ]; then
  97.     # Force usplash to finish drawing before attempting resume.
  98.     # The screen can sometimes become corrupted if usplash is
  99.     # interrupted by the resume.
  100.     /sbin/usplash_write "PROGRESS 0" \
  101.         "TEXT-URGENT Waking up.  Please wait..." \
  102.         "INPUTCHAR" || true
  103.     read ignored < /dev/.initramfs/usplash_outfifo
  104. fi
  105.  
  106. # hardcode path, uswsusp ships an resume binary too
  107. if [ -n "${resume_offset}" ]; then
  108.     /bin/resume ${resume} ${resume_offset}
  109. else
  110.     /bin/resume ${resume}
  111. fi
  112.  
  113. # Not reached if resume is successful
  114.  
  115. if [ -n "$magic_found" -a -x /sbin/usplash_write ]; then
  116.     /sbin/usplash_write "FAILURE failed!" \
  117.         "TEXT-URGENT Attempting normal startup." || true
  118. fi
  119.